1. Field of the Invention
The present invention relates to software tools for assisting software developers and users in the task of monitoring and analyzing the execution of computer programs, such as during the troubleshooting process.
2. Description of the Related Art
A drawback of current monitoring or troubleshooting systems is the inability to analyze software configuration problems in a particular computer system. The computing model used in modern environments such as Microsoft Windows, which is based on usage of numerous sophisticated and error-prone applications having many components interacting in a complex way, requires significant effort for system service and support. Many of these problems are software configuration errors that commonly occur when users add new programs and devices to their computers. Similarly, software configuration errors may occur due to the corruption of certain important system files, resources, and setups. Another source of software configuration errors is “unexpected” user behavior that was not envisioned by the software developers. For example, a user may inadvertently delete a file needed by the application.
In order to solve system software configuration problems, a number of solutions have been proposed, including: using application “DNA” or “fingerprint” files that represent an acceptable configuration of a system just after installation of an application; periodically copying disk snapshots and rolling back to the last known acceptable system state in the event of an error; and incorporating rollback functionality into Windows installer programs. However, these solutions have a number of disadvantages, including the need for manual creation and administration of application fingerprints, which requires the user to specify which configuration components are used by the applications. The user typically does not have this information. Another drawback is the need for centralized servers to store correct configurations and disk snapshots. Generally, solutions known in the art for troubleshooting software configuration problems are expensive and complex to implement.
Thus, it would be advantageous to develop a technique and system for monitoring the execution of computer programs in order to analyze, correct and prevent software configuration errors.